<?php
/**
 * アクセスカウンタ用
 *
 */
class AccessCount extends AppModel {

	var $name = 'AccessCount';
	var $useTable = false;

	/**
	 * アクセスログのハッシュを作成
	 *
	 * @return (array) ハンドルID => アクセス数
	 */
	function _get_accesslog() {
		$accesslog = array();

		// 読み込みファイル名作成
		$date = getdate();
		$yy = $date['year'];
		$mm = $date['mon'];
		$dd = $date['mday'] - 1;

		$timestamp = mktime(0, 0, 0, $mm, $dd, $yy);
		$hiduke = date("Y-n-j", $timestamp);

		// $hiduke = "{$yy}-{$mm}-{$dd}";
		$fname = ACCESSCOUNT . "dspace-log-general-{$hiduke}.dat";

		// 統計ファイルの読み込み
		if ( !file_exists($fname) ) {
			LogError("file_exists({$fname}); " . __FILE__);
			return false;
		}

		$fp = fopen($fname, 'r'); // 展開
		if ( $fp === false ) { // 展開失敗
			LogError("fopen({$fname}, 'r');" . __FILE__);
			return false;
		}

		while ( !feof($fp) ) { // 終端でなければ true
			$line = fgets($fp, 1024);
			if ( !preg_match('/^item\.2324.*/',$line) ) {
				continue;
			}

			// 件数切り出しのための準備
			// item.2324/8577=78
			// http://hdl.handle.net/2324/12453
			$fhandles = explode('/', $line); // 文字列例「item.2324/8577=78」を/で分割

			if ( empty($fhandles) || !is_array($fhandles) ) continue;

			$tmpfhandle = end($fhandles); // 文字列例を/で分割した後ろを取得「8577=78」
			$keyandval  = explode('=', $tmpfhandle); // 文字列例「8577=78」を=で分割

			if ( empty($keyandval) || !is_array($keyandval) ) continue;

			$fhandle     = reset($keyandval); // 「8577」
			$accesscount = end($keyandval); // 「78」

			if ( empty($fhandle) ) continue;
			if ( empty($accesscount) ) continue;

			$accesslog[$fhandle] = $accesscount;
		}

		fclose($fp); // 閉じる
		return $accesslog;
	}
}
?>